+

RU2827680C1 - Conveyor multiplier - Google Patents

Conveyor multiplier Download PDF

Info

Publication number
RU2827680C1
RU2827680C1 RU2024104905A RU2024104905A RU2827680C1 RU 2827680 C1 RU2827680 C1 RU 2827680C1 RU 2024104905 A RU2024104905 A RU 2024104905A RU 2024104905 A RU2024104905 A RU 2024104905A RU 2827680 C1 RU2827680 C1 RU 2827680C1
Authority
RU
Russia
Prior art keywords
block
pipeline
intermediate value
bit
value
Prior art date
Application number
RU2024104905A
Other languages
Russian (ru)
Inventor
Михаил Андреевич Наберухин
Original Assignee
Общество С Ограниченной Ответственностью "Мотив Нейроморфные Технологии"
Filing date
Publication date
Application filed by Общество С Ограниченной Ответственностью "Мотив Нейроморфные Технологии" filed Critical Общество С Ограниченной Ответственностью "Мотив Нейроморфные Технологии"
Application granted granted Critical
Publication of RU2827680C1 publication Critical patent/RU2827680C1/en
Priority to PCT/RU2024/050330 priority Critical patent/WO2025183589A1/en

Links

Abstract

FIELD: physics.
SUBSTANCE: invention relates to computer devices and is used in designing neuromorphic processors. Essence of the proposed device is as follows. Conveyor multiplier comprises an intermediate value generator configured to receive a first and a second operand and capable of generating intermediate multiplication results, a three-layer conveyor for convolution of intermediate values of the Wallace tree type for addition of the obtained intermediate values and obtaining a multiplication result, a multiplexer for selecting a multiplication or combined multiplication-addition operation with a third operand. Capacity of the input operands of multiplier is 16 bits, the capacity of the result of operation is 32 bits, and the capacity of the third operand for the MAC operation is 32 bits. At the same time units on clock signal are made so that each next unit operates on inverse edge of clock signal relative to the previous one; generator of intermediate values is based on a modified Booth algorithm, in which parallel generation of all versions of intermediate values in half a cycle is realized.
EFFECT: faster operation of the device.
5 cl, 15 dwg

Description

Изобретение относится к области компьютерных устройств, основанных на специфических вычислительных моделях, может быть использовано при проектировании нейроморфных процессорных устройств, а также может быть использовано в центральных и графических процессорных устройствах и иных областях. Конвейерный умножитель может являться частью арифметического сопроцессора процессорного ядра нейроморфной СБИС (сверхбольшой интегральной микросхемы) и предназначен для проведения операции умножения над двумя бинарными операндами или операции комбинированного умножения-сложения (МАС-операции) над тремя операндами. Два основных операнда являются целыми числами в диапазоне от –32768 до 32767, длинной 16 бит, представленные в дополнительном коде. Третьим дополнительным операндом для MAC-операции и операндом результата выполнения операции являются 32-битное целое число, представленное в дополнительном коде.The invention relates to the field of computer devices based on specific computing models, can be used in designing neuromorphic processor devices, and can also be used in central and graphic processor devices and other fields. The pipeline multiplier can be part of the arithmetic coprocessor of the processor core of a neuromorphic VLSI (very large-scale integrated circuit) and is intended to perform a multiplication operation on two binary operands or a combined multiplication-addition operation (MAC operation) on three operands. The two main operands are integers in the range from -32768 to 32767, 16 bits long, presented in additional code. The third additional operand for the MAC operation and the operand of the result of the operation are a 32-bit integer, presented in additional code.

Известен конвейерный арифметический умножитель (см. патент РФ №2546072, опубл. 2015 г., G06F 7/527). Устройство содержит два блока, которые имеют ячеистую структуру и разбиты на колонки и ряды, элемент памяти, элементы управления записью информации и чтением информации из памяти. Первый блок является входным с числом колонок, равным сумме разрядов множимого и множителя и с числом рядов на один больше числа разрядов множимого. У второго блока число колонок и число рядов равно числу разрядов соответственно множимого и множителя. При этом используются ячейки четырех типов (ИЛИ, И, полусумматор, сумматор) с регистрами.Known pipeline arithmetic multiplier (see Russian Federation patent No. 2546072, published 2015, G06F 7/527). The device contains two blocks, which have a cellular structure and are divided into columns and rows, a memory element, elements for controlling the recording of information and reading information from memory. The first block is an input block with a number of columns equal to the sum of the digits of the multiplicand and the multiplier and with a number of rows one more than the number of digits of the multiplicand. The second block has a number of columns and a number of rows equal to the number of digits of the multiplicand and the multiplier, respectively. Four types of cells (OR, AND, half adder, adder) with registers are used.

Основным недостатком данного решения является отсутствие имплементации операции сложения для реализации операции умножения-сложения в конвейер умножителя. Также недостатком является систолическая архитектура умножителя, являющаяся более медленной, по сравнению с архитектурой на основе алгоритма Бута.The main disadvantage of this solution is the lack of implementation of the addition operation to implement the multiplication-addition operation in the multiplier pipeline. Another disadvantage is the systolic architecture of the multiplier, which is slower than the architecture based on the Booth algorithm.

Известно устройство выполнения операций умножения-сложения (см. US 20190012143, опубл.2019 г), включающее умножитель, сумматор, первый регистр результатов и второй регистр результатов, соединенные с выходами умножителя и сумматора, соответственно. Включает четыре блока выбора. Первый блок выбора, выполненный с возможностью выборочной подачи на умножитель, и в ответ на первый управляющий сигнал первого значения из первого множества значений. Второй блок выбора, выполненный с возможностью выборочной подачи на умножитель и в ответ на второй управляющий сигнал второго значения из второго множества значений. Третий блок выбора, сконфигурированный для выборочной подачи в сумматор и в ответ на третий управляющий сигнал третьего значения из третьего множества значений. Четвертый блок выбора, сконфигурированный для выборочной подачи в сумматор и в ответ на четвертый управляющий сигнал четвертого значения из четвертого множества значений.A device for performing multiplication-addition operations is known (see US 20190012143, published 2019), including a multiplier, an adder, a first result register and a second result register connected to the outputs of the multiplier and the adder, respectively. It includes four selection units. The first selection unit is configured to selectively supply to the multiplier, and in response to the first control signal, a first value from a first plurality of values. The second selection unit is configured to selectively supply to the multiplier, and in response to the second control signal, a second value from a second plurality of values. The third selection unit is configured to selectively supply to the adder, and in response to the third control signal, a third value from a third plurality of values. The fourth selection unit is configured to selectively supply to the adder, and in response to the fourth control signal, a fourth value from a fourth plurality of values.

Основным недостатком данного решения является последовательная реализация MAC-операции, то есть умножение двух операндов, и последующее суммирование результата умножения с третьим операндом. Подобное решение приводит к разнице в скорости выполнения операции умножения и умножения-сложения, что усложняет работу контроллера очереди операций процессора, а также уменьшает общую скорость выполнения операции умножения-сложения.The main disadvantage of this solution is the sequential implementation of the MAC operation, i.e. the multiplication of two operands, and the subsequent summation of the result of the multiplication with the third operand. Such a solution leads to a difference in the speed of execution of the multiplication and multiplication-addition operations, which complicates the work of the processor's operation queue controller, and also reduces the overall speed of execution of the multiplication-addition operation.

Наиболее близким по технической сущности заявляемому устройству является устройство умножения-сложения и способ его работы (патент США №7730118, опубл.2006 г., МПК G06F 7/38), содержащее арифметический блок для выборочной реализации одной из команд умножения или умножения-сложения, включающий умножитель, конвейер свертки, регистр результата и схему аккумулятора. Умножитель выполнен с возможностью приема первого и второго операндов и способен генерировать члены умножения. Схема сложения для получения членов умножения от умножителя и возможность их объединения для получения результата умножения. Регистр результата для получения результата умножения от сумматора. Схема мультиплексора выбора операции подключена для приема значения, хранящегося в регистре результатов, и сигнала управления накоплением, который определяет, выполняет ли арифметический блок умножение, либо MAC-операцию. В известном устройстве использован генератор промежуточных значений на основе алгоритма Бута, шестистадийный конвейер свертки типа «древо Уоллеса» для
17 промежуточных значений и мультиплексор выбора операции умножения/комбинированного умножения-сложения.
The closest in technical essence to the claimed device is the multiplication-addition device and its operating method (US Patent No. 7,730,118, published in 2006, IPC G06F 7/38), containing an arithmetic unit for selectively implementing one of the multiplication or multiplication-addition instructions, including a multiplier, a convolution pipeline, a result register and an accumulator circuit. The multiplier is configured to receive the first and second operands and is capable of generating multiplication terms. An addition circuit for receiving the multiplication terms from the multiplier and the ability to combine them to obtain the multiplication result. A result register for receiving the multiplication result from the adder. An operation selection multiplexer circuit is connected to receive a value stored in the result register and an accumulation control signal that determines whether the arithmetic unit performs a multiplication or a MAC operation. The known device uses an intermediate value generator based on the Booth algorithm, a six-stage Wallace tree convolution pipeline for
17 intermediate values and a multiplication/combined multiplication-addition operation selection multiplexer.

Недостатком прототипа является применение стандартного алгоритма Бута, порождающего большее количество промежуточных значений, что увеличивает размеры конвейера. Для актуальных задач нейроморфных вычислений вариант вычислителя с разрядностью 32 бит не позволяет реализовать более компактное, производительное и энергоэффективное решение.The disadvantage of the prototype is the use of the standard Booth algorithm, which generates a larger number of intermediate values, which increases the size of the pipeline. For current tasks of neuromorphic computing, the 32-bit version of the calculator does not allow for the implementation of a more compact, productive and energy-efficient solution.

Задачами изобретения являются увеличение быстродействия, уменьшение площади устройства и энергопотребления при исполнении операции умножения или комбинированного умножения-сложения. The objectives of the invention are to increase the speed of operation, reduce the area of the device and energy consumption when performing a multiplication or combined multiplication-addition operation.

Техническим результатом является уменьшение количества генерируемых промежуточных значений, благодаря чему увеличивается быстродействие, уменьшается площадь и энергопотребление.The technical result is a reduction in the number of generated intermediate values, due to which the speed of operation increases, the area and energy consumption decrease.

Технический результат достигается тем, что конвейерный умножитель содержит генератор промежуточных значений, выполненный с возможностью приема первого и второго операндов, а также генерации промежуточных результатов умножения, выходы которого соединены со входами конвейера свертки промежуточных значений, вход которого связан с выходом мультиплексора выбора операции умножения или комбинированного умножения-сложения с третьим операндом, отличающийся тем, что конвейерный умножитель выполнен с возможностью обработки входных операндов разрядностью 16 бит, получения результата выполнения операции разрядностью 32 бита, работы каждого следующего блока по инверсному, относительно предыдущего блока, фронту синхросигнала; генератор промежуточных значений выполнен с возможностью реализации модифицированного алгоритма Бута Radix-8, а также ускоренной генерации промежуточных значений с неединичными коэффициентами за полтакта и параллельной генерации всех вариантов промежуточных значений; конвейер свёртки выполнен трёхслойным по типу «древо Уоллеса» с возможностью сложения шести промежуточных значений.The technical result is achieved in that the pipeline multiplier contains an intermediate value generator configured to receive the first and second operands, as well as to generate intermediate multiplication results, the outputs of which are connected to the inputs of an intermediate value convolution pipeline, the input of which is connected to the output of a multiplexer for selecting a multiplication operation or a combined multiplication-addition with a third operand, characterized in that the pipeline multiplier is configured to process input operands with a bit width of 16 bits, to obtain a result of performing an operation with a bit width of 32 bits, to operate each subsequent block on an inverse, relative to the previous block, front of a clock signal; the intermediate value generator is configured to implement a modified Booth Radix-8 algorithm, as well as accelerated generation of intermediate values with non-unit coefficients in half a clock cycle and parallel generation of all intermediate value variants; the convolution pipeline is implemented as a three-layer "Wallace tree" type with the capability of adding six intermediate values.

Блоки генератора промежуточных значений выполнены с возможностью генерации вариантов промежуточных значений из операнда-множимого. The intermediate value generator blocks are designed with the ability to generate intermediate value variants from the multiplicand operand.

Мультиплексор генератора промежуточных значений состоит из шести параллельных мультиплексоров. The intermediate value generator multiplexer consists of six parallel multiplexers.

Конвейер свертки выполнен с возможностью проведения трёх этапов сложения, каждый из которых осуществляется отдельной группой сумматоров. The convolution pipeline is designed with the ability to perform three stages of addition, each of which is carried out by a separate group of adders.

Мультиплексор выбора операции выполнен с возможностью записи на основе значения флага выбора операции значения 32-битного операнда в случае исполнения операции комбинированного умножения-сложения либо записи логического ноля в случае исполнения операции умножения в 32-битный регистр при параллельной генерации промежуточных значений и их загрузке в конвейер свертки промежуточных значений посредством коммутации через мультиплексор, передающий полученное значение в конвейер свертки промежуточных значений.The operation selection multiplexer is configured to record, based on the value of the operation selection flag, the value of a 32-bit operand in the case of executing a combined multiplication-addition operation or to record a logical zero in the case of executing a multiplication operation in a 32-bit register during parallel generation of intermediate values and their loading into the intermediate value convolution pipeline by switching through the multiplexer, which transmits the obtained value into the intermediate value convolution pipeline.

Признак «разрядность входных операндов умножителя 16 бит» влияет на технический результат следующим образом: из-за более короткого операнда генерируется меньше промежуточных значений, что уменьшает количество сумматоров в первом слое конвейера свертки промежуточных значений, что в свою очередь приводит к уменьшению количества слоев в конвейере свертки промежуточных значений, что приводит к увеличению быстродействия, уменьшению площади и энергопотребления устройства.The feature "bit depth of input operands of the multiplier 16 bits" affects the technical result as follows: due to the shorter operand, fewer intermediate values are generated, which reduces the number of adders in the first layer of the intermediate value convolution pipeline, which in turn leads to a decrease in the number of layers in the intermediate value convolution pipeline, which leads to an increase in speed, a decrease in area and power consumption of the device.

Разрядность результата выполнения операции 32 бита влияет на технический результат, так как уменьшение разрядности выходного операнда уменьшает разрядность сумматоров, регистров, мультиплексоров и прочих элементов устройства, что в свою очередь приводит к снижению энергопотребления и уменьшению площади устройства. The bit depth of the result of performing a 32-bit operation affects the technical result, since a decrease in the bit depth of the output operand reduces the bit depth of adders, registers, multiplexers and other elements of the device, which in turn leads to a decrease in energy consumption and a decrease in the area of the device.

Выполнение блоков по синхросигналу таким образом, что каждый следующий блок работает по инверсному фронту синхросигнала, относительно предыдущего, приводит к увеличению частоты работы блоков, за счет этого достигается увеличение быстродействия устройства.Executing blocks according to a synchronization signal in such a way that each subsequent block operates according to the inverse front of the synchronization signal, relative to the previous one, leads to an increase in the operating frequency of the blocks, due to which an increase in the speed of the device is achieved.

Параллельная генерация промежуточных значений за пол такта позволяет конвейеризовать обработку входных операндов, что приводит к увеличению быстродействия устройства.Parallel generation of intermediate values in half a clock cycle allows pipeline processing of input operands, which leads to increased device performance.

Выполнение трехслойного конвейера, складывающего 6 промежуточных значений, позволяет оптимизировать структуру конвейера свертки промежуточных значений, что приводит к увеличению быстродействия, уменьшению площади и энергопотребления устройства.Implementation of a three-layer pipeline that adds 6 intermediate values allows optimizing the structure of the intermediate value convolution pipeline, which leads to increased performance, reduced area and energy consumption of the device.

Уменьшение количества генерируемых промежуточных значений достигается за счет генерации промежуточных значений на основе сразу нескольких элементов операнда-множителя. В случае вариации Radix-8 множитель разбивается на битовые «квартеты», на основе которых определяются коэффициенты, на которые умножается множитель для получения набора промежуточных значений.The reduction in the number of generated intermediate values is achieved by generating intermediate values based on several elements of the multiplier operand at once. In the case of the Radix-8 variation, the multiplier is divided into bit "quartets", based on which the coefficients are determined by which the multiplier is multiplied to obtain a set of intermediate values.

Применение алгоритма Radix-8 увеличивает размер применяемой избыточной кодировки множителя, что приводит к уменьшению количества промежуточных значений. В свою очередь, уменьшение разрядности входных операндов с 32 (см. прототип) до 16 бит также приводит к уменьшению количества промежуточных значений. Кумулятивный эффект применения данных решений позволяет уменьшить ширину и глубину конвейера свертки, так как конвейер складывает только 6 промежуточных значений, вместо 17 у прототипа, что в свою очередь приводит к оптимизации заявленных характеристик.The use of the Radix-8 algorithm increases the size of the applied redundant encoding of the multiplier, which leads to a decrease in the number of intermediate values. In turn, reducing the bit depth of the input operands from 32 (see prototype) to 16 bits also leads to a decrease in the number of intermediate values. The cumulative effect of using these solutions allows for a decrease in the width and depth of the convolution pipeline, since the pipeline adds only 6 intermediate values, instead of 17 in the prototype, which in turn leads to optimization of the declared characteristics.

На фиг. 1 представлена принципиальная схема устройства, где блок 1 – генератор промежуточных значений, блок 2 – мультиплексор выбора операции, блок 3 – конвейер свертки промежуточных значений, вход 4 – 16-ти битный операнд-множимое, вход 5 – 16-ти битный операнд-множитель, вход 6 – логический 0, вход 7 – 32-битный операнд для МАС-операции, вход 8 – флаг выбора операции МАС-операции, выход 9 – результат работы устройства.Fig. 1 shows a schematic diagram of the device, where block 1 is an intermediate value generator, block 2 is an operation selection multiplexer, block 3 is an intermediate value convolution pipeline, input 4 is a 16-bit operand-multiplicand, input 5 is a 16-bit operand-multiplier, input 6 is a logical 0, input 7 is a 32-bit operand for the MAC operation, input 8 is a MAC operation selection flag, output 9 is the result of the device operation.

На фиг. 2 представлен генератор промежуточных значений, где 11 – блок генератора промежуточных значений с коэффициентом 4, 12 – блок генератора промежуточных значений с коэффициентом 3, 13 – блок генератора промежуточных значений с коэффициентом 2, 14 – блок генератора промежуточных значений с коэффициентом 1, 15 – блок генератора промежуточных значений с коэффициентом минус 1, 16 – блок генератора промежуточных значений с коэффициентом минус 2, 17 – блок генератора промежуточных значений с коэффициентом минус 3, 18 – блок генератора промежуточных значений с коэффициентом минус 4, блок 19 – мультиплексор генератора промежуточных значений.Fig. 2 shows a generator of intermediate values, where 11 is a block of a generator of intermediate values with a coefficient of 4, 12 is a block of a generator of intermediate values with a coefficient of 3, 13 is a block of a generator of intermediate values with a coefficient of 2, 14 is a block of a generator of intermediate values with a coefficient of 1, 15 is a block of a generator of intermediate values with a coefficient of minus 1, 16 is a block of a generator of intermediate values with a coefficient of minus 2, 17 is a block of a generator of intermediate values with a coefficient of minus 3, 18 is a block of a generator of intermediate values with a coefficient of minus 4, block 19 is a multiplexer of the generator of intermediate values.

На фиг. 3 представлен блок генератора промежуточных значений с коэффициентом 1, где блок 141 – 18-битный регистр.Fig. 3 shows a block of an intermediate value generator with a coefficient of 1, where block 141 is an 18-bit register.

На фиг. 4 представлен блок генератора промежуточных значений с коэффициентом 2, где блок 131 – 18-битный регистр.Fig. 4 shows a block of an intermediate value generator with a coefficient of 2, where block 131 is an 18-bit register.

На фиг. 5 представлен блок генератора промежуточных значений с коэффициентом 3, где блок 121 – 18-битный полный двоичный сумматор.Fig. 5 shows a block of an intermediate value generator with a coefficient of 3, where block 121 is an 18-bit full binary adder.

На фиг. 6 представлен блок генератора промежуточных значений с коэффициентом 4, где блок 111 –18-битный регистр.Fig. 6 shows a block of an intermediate value generator with a coefficient of 4, where block 111 is an 18-bit register.

На фиг. 7 представлен блок генератора промежуточных значений с коэффициентом минус 1, где блок 151 – 18-битный логический инвертор, блок 152 – 18-битный полный двоичный сумматор.Fig. 7 shows a block of an intermediate value generator with a coefficient of minus 1, where block 151 is an 18-bit logical inverter, block 152 is an 18-bit full binary adder.

На фиг. 8 представлен блок генератора промежуточных значений с коэффициентом минус 2, где блок 161 – 18-битный логический инвертор, блок 162 – 18-битный полный двоичный сумматор.Fig. 8 shows a block of an intermediate value generator with a coefficient of minus 2, where block 161 is an 18-bit logical inverter, block 162 is an 18-bit full binary adder.

На фиг. 9 представлен блок генератора промежуточных значений с коэффициентом минус 3, где блок 171 – 18-битный логический инвертор, блок 172 – 18-битный полный двоичный сумматор.Fig. 9 shows a block of an intermediate value generator with a coefficient of minus 3, where block 171 is an 18-bit logical inverter, block 172 is an 18-bit full binary adder.

На фиг. 10 представлен блок генератора промежуточных значений с коэффициентом минус 4, где блок 181 – 18-битный логический инвертор, блок 182 – 18-битный полный двоичный сумматор.Fig. 10 shows a block of an intermediate value generator with a coefficient of minus 4, where block 181 is an 18-bit logical inverter, block 182 is an 18-bit full binary adder.

На фиг. 11 представлена схема мультиплексора генератора промежуточных значений, где блоки 191, 192, 193, 194, 195, 196 – мультиплексоры.Fig. 11 shows a diagram of a multiplexer of an intermediate value generator, where blocks 191, 192, 193, 194, 195, 196 are multiplexers.

На фиг. 12 представлен мультиплексор выбора операции, где блок 21 – мультиплексор, блок 22 – 32-битный регистр.Fig. 12 shows the operation selection multiplexer, where block 21 is a multiplexer, block 22 is a 32-bit register.

На фиг. 13 представлен конвейер свертки промежуточных значений, где блоки 31, 32, 33, 34, 35, 36 – 32-битные полные двоичные сумматоры.Fig. 13 shows a pipeline for convolution of intermediate values, where blocks 31, 32, 33, 34, 35, 36 are 32-bit full binary adders.

На фиг.14, в таблице приведены вариации битовых квартетов и соответствующие им коэффициенты.In Fig. 14, the table shows variations of bit quartets and their corresponding coefficients.

На фиг. 15 на временной диаграмме представлен общий принцип работы изобретения.Fig. 15 shows a timing diagram showing the general operating principle of the invention.

Устройство состоит из трех функциональный блоков: генератора промежуточных значений (блок 1, см.фиг.2), мультиплексора выбора операции (блок 2, см.фиг.12) и блока свертки (блок 3, см.фиг.13).The device consists of three functional blocks: an intermediate value generator (block 1, see Fig. 2), an operation selection multiplexer (block 2, see Fig. 12) and a convolution block (block 3, see Fig. 13).

Генерация вариантов промежуточных значений из операнда-множимого (вход 4) происходит в блоках генератора промежуточных значений (блоки 11-18, см. фиг. 3-10).Generation of intermediate value variants from the multiplicand operand (input 4) occurs in the intermediate value generator blocks (blocks 11-18, see Fig. 3-10).

Блок генератора промежуточных значений с коэффициентом «4» (блок 11), записывает значение операнда-множимого (вход 4) в 18-битный регистр, со сдвигом влево на 2, тем самым генерируя и сохраняя 18-битное значение (блок 111), которое в дальнейшем передается на вход блока 19 (см. фиг.6).The intermediate value generator block with the coefficient “4” (block 11) writes the value of the operand-multiplicand (input 4) into an 18-bit register, with a left shift of 2, thereby generating and storing an 18-bit value (block 111), which is subsequently transmitted to the input of block 19 (see Fig. 6).

Блок генератора промежуточных значений с коэффициентом «3» (блок 12), подает значение операнда-множимого (вход 4), со сдвигом влево на 1 и расширением старшего бита на 1, и значение операнда-множимого (вход 4) с расширением старшего бита на 2, в 18-битный сумматор (121), где путем сложения создается и сохраняется 18-битное значение, которое в дальнейшем передается на вход блока 19 (см. фиг.5).The intermediate value generator block with the coefficient “3” (block 12) feeds the value of the operand-multiplicand (input 4), with a left shift by 1 and an extension of the most significant bit by 1, and the value of the operand-multiplicand (input 4) with an extension of the most significant bit by 2, into the 18-bit adder (121), where an 18-bit value is created and stored by addition, which is then transmitted to the input of block 19 (see Fig. 5).

Блок генератора промежуточных значений с коэффициентом «2» (блок 13), записывает значение операнда-множимого (вход 4) в 18-битный регистр со сдвигом влево на 1 и расширением старшего бита на 1, тем самым генерируя и сохраняя 18-битное значение (блок 131), которое в дальнейшем передается на вход блока 19 (см.фиг.4).The intermediate value generator block with the coefficient “2” (block 13) writes the value of the multiplicand operand (input 4) into an 18-bit register with a left shift by 1 and an extension of the most significant bit by 1, thereby generating and storing an 18-bit value (block 131), which is then transmitted to the input of block 19 (see Fig. 4).

Блок генератора промежуточных значений с коэффициентом «1» (блок 14), записывает значение операнда-множимого (вход 4) в 18-битный регистр, с расширением старшего бита на 2, тем самым генерируя и сохраняя 18-битное значение (блок 141), которое в дальнейшем передается на вход блока 19 (см.фиг.3).The intermediate value generator block with the coefficient “1” (block 14) writes the value of the operand-multiplicand (input 4) into an 18-bit register, with the most significant bit extended by 2, thereby generating and storing an 18-bit value (block 141), which is then transmitted to the input of block 19 (see Fig. 3).

Блок генератора промежуточных значений с коэффициентом «минус 1» (блок 15), подает значение операнда-множимого (вход 4) с расширением старшего бита на 2, в 18-битный инвертор (блок 151), получая значение равное отрицательному множимому минус один, затем подавая его в сумматор (блок 152), где к нему прибавляется 1, получая и сохраняя 18-битное значение равное отрицательному множимому, которое в дальнейшем передается на вход блока 19 (см.фиг.7).The intermediate value generator block with the coefficient “minus 1” (block 15) feeds the value of the operand-multiplicand (input 4) with the extension of the most significant bit by 2, into the 18-bit inverter (block 151), obtaining a value equal to the negative multiplicand minus one, then feeding it into the adder (block 152), where 1 is added to it, obtaining and storing an 18-bit value equal to the negative multiplicand, which is then transmitted to the input of block 19 (see Fig. 7).

Блок генератора промежуточных значений с коэффициентом «минус 2» (блок 16), подает значение операнда-множимого (вход 4), со сдвигом влево на 1 и расширением старшего бита на 1, в 18-битный инвертор (блок 161), получая значение равное удвоенному отрицательному множимому минус один, затем подавая его в сумматор (блок 162), где к нему прибавляется 1, получая и сохраняя значение удвоенного отрицательного множимого, которое в дальнейшем передается на вход блока 19 (см.фиг.8).The intermediate value generator block with the coefficient “minus 2” (block 16) feeds the value of the operand-multiplicand (input 4), with a left shift by 1 and an extension of the most significant bit by 1, into the 18-bit inverter (block 161), obtaining a value equal to twice the negative multiplicand minus one, then feeding it into the adder (block 162), where 1 is added to it, obtaining and storing the value of twice the negative multiplicand, which is then transmitted to the input of block 19 (see Fig. 8).

Блок генератора промежуточных значений с коэффициентом «минус 3» (блок 17), подает значение операнда-множимого (вход 4) со сдвигом влево на 2, в 18-битный инвертор (блок 171), получая значение учетверенного отрицательного множимого минус один, затем подавая его в сумматор (блок 182), где к нему прибавляется значение операнда-множимого (вход 4) с расширением старшего бита на 2, и 1, получая и сохраняя значение отрицательного утроенного множимого, которое в дальнейшем передается на вход блока 19 (см.фиг.9).The intermediate value generator block with the coefficient “minus 3” (block 17) feeds the value of the operand-multiplicand (input 4) with a left shift by 2, into the 18-bit inverter (block 171), obtaining the value of the quadruple negative multiplicand minus one, then feeding it into the adder (block 182), where the value of the operand-multiplicand (input 4) is added to it with the extension of the most significant bit by 2 and 1, obtaining and storing the value of the negative triple multiplicand, which is then transmitted to the input of block 19 (see Fig. 9).

Блок генератора промежуточных значений с коэффициентом «минус 4» (блок 18), подает значение операнда-множимого (вход 4), со сдвигом влево на 2, в 18-битный инвертор (блок 181), получая значение учетверенного отрицательного множимого минус один, затем подавая его в сумматор (блок 182), где к нему прибавляется 1, получая и сохраняя значение учетверенного отрицательного множимого, которое в дальнейшем передается на вход блока 19 (см.фиг.10).The intermediate value generator block with the coefficient “minus 4” (block 18) feeds the value of the operand-multiplicand (input 4), shifted to the left by 2, into the 18-bit inverter (block 181), obtaining the value of the quadruple negative multiplicand minus one, then feeding it into the adder (block 182), where 1 is added to it, obtaining and storing the value of the quadruple negative multiplicand, which is then transmitted to the input of block 19 (see Fig. 10).

Мультиплексор генератора промежуточных значений (блок 19, см.фиг.11) загружает промежуточные значения полученные из блоков 11-18 и линии логического 0 (вход 6), которая равна результату умножения множимого на нулевой коэффициент, соответствующие квартетам (см. фиг.14), полученным из операнда-множителя (вход 5) в конвейер свертки промежуточных значений (блок 3). Мультиплексор генератора промежуточных значений состоит из 6 параллельных мультиплексоров (блоки 191-196). При передаче промежуточного значения в древо свертки мультиплексоры нормализуют их до 32-битной разрядности. Так мультиплексор (блок 191) расширяет старший бит передаваемого промежуточного значения на 14 бит, мультиплексор (блок 192) сдвигает значение влево на 3 и расширяет старший бит передаваемого промежуточного значения на 11 бит, мультиплексор (блок 193) сдвигает значение влево на 6 расширяет и старший бит передаваемого промежуточного значения на 8 бит, мультиплексор (блок 194) сдвигает значение влево на 9 и расширяет старший бит передаваемого промежуточного значения на 5 бит, мультиплексор (блок 195) сдвигает значение влево на 12 и расширяет старший бит передаваемого промежуточного значения на 2 бита, мультиплексор (блок 196) сдвигает значение влево на 15 и отбрасывает старший бит промежуточного значения.The intermediate value generator multiplexer (block 19, see Fig. 11) loads the intermediate values obtained from blocks 11-18 and the logical 0 line (input 6), which is equal to the result of multiplying the multiplicand by the zero coefficient, corresponding to the quartets (see Fig. 14) obtained from the multiplier operand (input 5) into the intermediate value convolution pipeline (block 3). The intermediate value generator multiplexer consists of 6 parallel multiplexers (blocks 191-196). When transmitting an intermediate value to the convolution tree, the multiplexers normalize them to 32-bit capacity. Thus, the multiplexer (block 191) expands the most significant bit of the transmitted intermediate value by 14 bits, the multiplexer (block 192) shifts the value to the left by 3 and expands the most significant bit of the transmitted intermediate value by 11 bits, the multiplexer (block 193) shifts the value to the left by 6 and expands the most significant bit of the transmitted intermediate value by 8 bits, the multiplexer (block 194) shifts the value to the left by 9 and expands the most significant bit of the transmitted intermediate value by 5 bits, the multiplexer (block 195) shifts the value to the left by 12 and expands the most significant bit of the transmitted intermediate value by 2 bits, the multiplexer (block 196) shifts the value to the left by 15 and discards the most significant bit of the intermediate value.

Параллельно генерации промежуточных значений (блок 2) и их загрузке в конвейер свертки промежуточных значений (блок 3), мультиплексор выбора операции (блок 2), на основе значения флага выбора операции (вход 8), посредством коммутации через мультиплексор (блок 21), записывает либо значение 32-битного операнда (вход 7) в случае исполнения операции комбинированного умножения-сложения, либо логический 0 (вход 6) в случае исполнения операции умножения в 32-битный регистр (блок 22), который в дальнейшем передает значение в конвейер свертки промежуточных значений (блок 3).In parallel with the generation of intermediate values (block 2) and their loading into the intermediate value convolution pipeline (block 3), the operation selection multiplexer (block 2), based on the value of the operation selection flag (input 8), by means of switching through the multiplexer (block 21), writes either the value of the 32-bit operand (input 7) in the case of executing a combined multiplication-addition operation, or a logical 0 (input 6) in the case of executing a multiplication operation into a 32-bit register (block 22), which subsequently transfers the value into the intermediate value convolution pipeline (block 3).

Конвейер свертки промежуточных значений (блок 3) является трехслойным конвейером типа «древо Уолеса» (см.фиг. 13, где блоки 31-36 это 32-битные полные двоичные сумматоры), в котором промежуточные значения попарно складываются для получения результата, который затем передается на выход 9.The intermediate value convolution pipeline (block 3) is a three-layer Wallace tree pipeline (see Fig. 13, where blocks 31-36 are 32-bit full binary adders), in which the intermediate values are added pairwise to obtain a result, which is then passed to output 9.

Выбор древовидной структуры блока свертки связан с наилучшим быстродействием данного типа структуры по сравнению с аналогами и возможностью потоковой обработки данных.The choice of the tree-like structure of the convolution block is associated with the best performance of this type of structure compared to analogues and the possibility of streaming data processing.

Для увеличения скорости работы устройства, работа стадий была оптимизирована относительно синхросигнала: каждая следующая стадия умножителя работает по инверсному фронту синхросигнала, относительно предыдущей. Таким образом была достигнута скорость выполнения операции, равная двум тактам. Общий принцип работы изобретения представлен на временной диаграмме на фиг.15.To increase the speed of the device, the operation of the stages was optimized relative to the synchronization signal: each subsequent stage of the multiplier operates on the inverse front of the synchronization signal, relative to the previous one. Thus, the speed of the operation equal to two clock cycles was achieved. The general principle of the invention is shown in the timing diagram in Fig. 15.

В начале работы на входы генератора промежуточных значений (блок 1) поступают два 16-битных операнда — множимое (вход 4) и множитель (вход 5). На основе операнда-множимого генерируются все варианты промежуточных значений, применяемые в алгоритме, с коэффициентами от 4 до минус 4 (блоки 11-18). Параллельно, на основе операнда-множителя генерируются битовые квартеты, на основе которых в конвейер свертки промежуточных значений (блок 3) поступают промежуточные значения, получаемые путем выбора в соответствии со значением битовых квартетов и нормализации до 32-битной ширины в мультиплексорах (блоки 191-196) согласно порядковому номеру квартета. Затем, в конвейере свертки промежуточных значений (блок 3) начинается параллельное попарное арифметическое суммирование промежуточных значений. После поступления группы промежуточных значений в конвейер свертки промежуточных значений генератор промежуточных значений (блок 1) может начать генерацию новых промежуточных значений из новой пары операндов (вход 4 и вход 5). Параллельно первому этапу свертки, через мультиплексор выбора операции (блок 2) в конвейер свертки промежуточных значений может быть добавлен третий 32-битный операнд (вход 7) в случае исполнения операции комбинированного умножения-сложения, в ином случае данный операнд принимается равным нулю (вход 6), и исполняется операция умножения, управление выбором операции осуществляются флагом выбора операции (вход 8). Вне зависимости от выполняемой операции, конвейер свертки проводит три этапа сложения, каждый из которых обрабатываться отдельной группой сумматоров (блоки 31-36). После третьего этапа свертки результат умножения или комбинированного умножения-сложения передается на выход устройства 9.At the beginning of the operation, two 16-bit operands are fed to the inputs of the intermediate value generator (block 1): the multiplicand (input 4) and the multiplier (input 5). Based on the multiplicand operand, all variants of intermediate values used in the algorithm are generated, with coefficients from 4 to minus 4 (blocks 11-18). In parallel, based on the multiplier operand, bit quartets are generated, based on which intermediate values are fed to the intermediate value convolution pipeline (block 3), obtained by selecting in accordance with the value of the bit quartets and normalizing to 32-bit width in the multiplexers (blocks 191-196) according to the ordinal number of the quartet. Then, in the intermediate value convolution pipeline (block 3), parallel pairwise arithmetic summation of intermediate values begins. After the intermediate value group enters the intermediate value convolution pipeline, the intermediate value generator (block 1) can start generating new intermediate values from a new pair of operands (input 4 and input 5). In parallel to the first convolution stage, a third 32-bit operand (input 7) can be added to the intermediate value convolution pipeline via the operation selection multiplexer (block 2) in case of executing a combined multiplication-addition operation, otherwise this operand is taken to be equal to zero (input 6), and the multiplication operation is executed, the operation selection is controlled by the operation selection flag (input 8). Regardless of the operation being executed, the convolution pipeline performs three addition stages, each of which is processed by a separate group of adders (blocks 31-36). After the third convolution stage, the result of the multiplication or combined multiplication-addition is transmitted to the output of device 9.

Пример выполнения операции умножения.An example of performing a multiplication operation.

Пусть операнд-множимое (вход 4) равен 0000000011111010 (далее – А), операнд-множитель (вход 5) равен 0000110010100010 (далее – В) и флаг выбора операции (вход 8) равен 0. В таком случае значение операнда MAC-операции (вход 7) не рассматривается, так как устройство исполняет операцию умножения, и следовательно, в регистр мультиплексора выбора операции (блок 22) записывается опорный логический 0 (вход 6).Let the multiplicand operand (input 4) be equal to 0000000011111010 (hereinafter referred to as A), the multiplier operand (input 5) be equal to 0000110010100010 (hereinafter referred to as B), and the operation selection flag (input 8) be equal to 0. In this case, the value of the MAC operation operand (input 7) is not considered, since the device performs a multiplication operation, and therefore, the reference logical 0 (input 6) is written to the operation selection multiplexer register (block 22).

По переднему фронту синхросигнала (далее – CK) в генераторе промежуточных значений (блок 1) блоки генерации промежуточных значений вычисляют из А промежуточные 18-битные значения. Так, блок 11 генерирует значение 4*А равное 000000001111101000, блок 12 генерирует значение 3*А равное 000000001011101110, блок 13 генерирует значение 2*А равное 000000000111110100, блок 14 генерирует значение А равное 000000000011111010, блок 15 генерирует значение минус А равное 111111111100000110, блок 16 генерирует значение минус 2*А равное 111111111000001100, блок 17 генерирует значение минус 3*А равное 111111110100010010, блок 18 генерирует значение минус 4*А, равное 111111110000011000. Промежуточное значение коэффициента 0 не генерируется, а мультиплицируется из опорного 0 (вход 6).Based on the leading edge of the clock signal (hereinafter referred to as CK) in the intermediate value generator (block 1), the intermediate value generation blocks calculate intermediate 18-bit values from A. Thus, block 11 generates the value of 4*A equal to 000000001111101000, block 12 generates the value of 3*A equal to 000000001011101110, block 13 generates the value of 2*A equal to 000000000111110100, block 14 generates the value of A equal to 000000000011111010, block 15 generates the value of minus A equal to 111111111100000110, block 16 generates the value of minus 2*A equal to 111111111000001100, block 17 generates the value of minus 3*A equal to 111111110100010010, block 18 generates the value of minus 4*A equal to 111111110000011000. The intermediate value of the coefficient 0 is not generated, but is multiplied from the reference 0 (input 6).

Параллельно этому, мультиплексор генератора промежуточных значений (блок 19) производит коммутацию конвейера свертки промежуточных операций с блоками генерации в соответствии с В (вход 5). Для этого, В (вход 5) разбивается на 6 битовых групп со взаимным перекрытием на 1 бит, и поступают на управляющие входы мультиплексоров генератора промежуточных значений (блоки 191-196), причем, на управляющем входе мультиплексора (блок 191) битовая группа смещается влево на 1, а на управляющем входе мультиплексора (блок 196) расширяется знаковый бит, тем самым получая следующий набор квартетов входа: управляющий вход блока 191 = 0100, управляющий вход блока 192 = 1000, управляющий вход блока 193 = 0101, управляющий вход блока 194 = 1100, управляющий вход блока 195 = 0001, управляющий вход блока 196 = 0000. Каждому коэффициенту промежуточных значений соответствует один или более вариантов квартетов бинарных чисел (см. фиг.14). Так же, мультиплексоры генератора промежуточных значений (блоки 191-196) приводят промежуточные значения к 32-битному виду, за счет смещения влево значения на номер квартета умноженного на 3, и заполнением оставшихся старших битов посредством расширения знакового бита, или наоборот, отбрасыванием старшего бита промежуточного значения в случае 5 квартета. Таким образом, мультиплексор генератора промежуточных значений передает в конвейер свертки промежуточных значений (блок 3) следующий набор пар промежуточных значений в сумматоры первого слоя: сумматор блок 31 00000000000000000000000111110100 и 11111111111111111110000011000000, сумматор блок 32 00000000000000001011101110000000 и 11111111111111000001100000000000, сумматор блок 33 00000000000011111010000000000000 и 00000000000000000000000000000000.In parallel to this, the intermediate value generator multiplexer (block 19) performs switching of the intermediate operation convolution pipeline with the generation blocks in accordance with B (input 5). For this purpose, B (input 5) is divided into 6 bit groups with mutual overlap of 1 bit, and fed to the control inputs of the intermediate value generator multiplexers (blocks 191-196), wherein, at the control input of the multiplexer (block 191), the bit group is shifted to the left by 1, and at the control input of the multiplexer (block 196), the sign bit is expanded, thereby obtaining the following set of input quartets: control input of block 191 = 0100, control input of block 192 = 1000, control input of block 193 = 0101, control input of block 194 = 1100, control input of block 195 = 0001, control input of block 196 = 0000. Each coefficient of the intermediate values corresponds to one or more variants of quartets of binary numbers (see Fig. 14). Also, the intermediate value generator multiplexers (blocks 191-196) convert the intermediate values to 32-bit form by shifting the value to the left by the quartet number multiplied by 3, and filling the remaining high-order bits by extending the sign bit, or vice versa, by discarding the high-order bit of the intermediate value in the case of quartet 5. Thus, the intermediate value generator multiplexer passes the following set of intermediate value pairs to the intermediate value convolution pipeline (block 3) into the adders of the first layer: adder block 31 00000000000000000000000111110100 and 11111111111111111110000011000000, adder block 32 000000000000000001011101110000000 and 111111111111111000001100000000000, adder block 33 0000000000001111101000000000000 and 000000000000000000000000000000000.

После, по заднему фронту синхросигнала CK первый слой сумматоров (блоки 31-33) в конвейере свертки промежуточных значений начинает попарно складывать значения, переданные из генератора промежуточные значения (блок 1). Таким образом, на выходе первого слоя формируется 3 промежуточных 32-битных значения, которые передаются в сумматоры второго слоя: сумматор блок 34 11111111111111111110001010110100 и 11111111111111001101001110000000, сумматор блок 35 00000000000011111010000000000000.Afterwards, at the falling edge of the CK clock signal, the first layer of adders (blocks 31-33) in the intermediate value convolution pipeline begins to add in pairs the values transferred from the intermediate value generator (block 1). Thus, at the output of the first layer, 3 intermediate 32-bit values are formed, which are transferred to the adders of the second layer: adder block 34 11111111111111111110001010110100 and 1111111111111111001101001110000000, adder block 35 0000000000001111101000000000000.

После, по следующему переднему фронту синхросигнала CK второй слой сумматоров (блоки 34-35) в конвейере свертки промежуточных значений начинает попарно складывать переданные из предыдущего слоя промежуточные значения. Так как исполняется операция умножения, на вход сумматора блок 35 из мультиплексора выбора операции (блок 2) подается значение вход 6, равное 00000000000000000000000000000000. Таким образом, на выходе первого слоя формируется 2 промежуточных 32-битных значения, которые подаются на сумматор блок 36: 11111111111111001011011000110100 и 00000000000011111010000000000000. Параллельно этому генератор промежуточных значений (блок 1) и мультиплексор выбора операции (блок 2) могут начать обработку следующего набора операндов.Afterwards, at the next leading edge of the CK clock signal, the second layer of adders (blocks 34-35) in the intermediate value convolution pipeline begins to add the intermediate values transmitted from the previous layer in pairs. Since the multiplication operation is executed, the value input 6, equal to 00000000000000000000000000000000000, is fed to the input of adder block 35 from the operation selection multiplexer (block 2). Thus, at the output of the first layer, 2 intermediate 32-bit values are formed, which are fed to adder block 36: 11111111111111001011011000110100 and 000000000000011111010000000000000. In parallel to this, the intermediate value generator (block 1) and the operation selection multiplexer (block 2) can begin processing the next set of operands.

После, по заднему фронту синхросигнала CK последний слой сумматоров в конвейере свертки промежуточных значений (блок 3) заканчивает операцию умножения сложением последних промежуточных значений, формируя результат (выход 9), равный 00000000000011000101011000110100. Затем, до следующего положительного фронта CK будет удерживаться результат на выходе конвейера свертки промежуточных значений.Then, on the falling edge of the CK clock signal, the last layer of adders in the intermediate value convolution pipeline (block 3) completes the multiplication operation by adding the last intermediate values, forming a result (output 9) equal to 00000000000011000101011000110100. Then, until the next positive edge of CK, the result at the output of the intermediate value convolution pipeline will be held.

Пример исполнения операции комбинированного умножения-сложения (MAC-операции).An example of the execution of a combined multiplication-addition operation (MAC operation).

Пусть операнд-множимое (вход 4) равно 0000000011111010 (далее – А), операнд-множитель (вход 5) равен 0000110010100010 (далее – В) и флаг выбора операции (вход 8) равен 1, операнд MAC-операции (вход 7) равен 00001010111100110000101011110011, и следовательно, в регистр мультиплексора выбора операции (блок 22) записывается значение операнда MAC-операции (вход 7).Let the multiplicand operand (input 4) be equal to 0000000011111010 (hereinafter referred to as A), the multiplier operand (input 5) be equal to 0000110010100010 (hereinafter referred to as B), and the operation selection flag (input 8) be equal to 1, the MAC operation operand (input 7) be equal to 00001010111100110000101011110011, and therefore, the value of the MAC operation operand (input 7) is written into the operation selection multiplexer register (block 22).

По переднему фронту синхросигнала (далее – CK) в генераторе промежуточных значений (блок 1) блоки генерации промежуточных значений вычисляют из А промежуточные 18-битные значения. Так, блок 11 генерирует значение 4*А равное 000000001111101000, блок 12 генерирует значение 3*А равное 000000001011101110, блок 13 генерирует значение 2*А равное 000000000111110100, блок 14 генерирует значение А равное 000000000011111010, блок 15 генерирует значение минус А равное 111111111100000110, блок 16 генерирует значение минус 2*А равное 111111111000001100, блок 17 генерирует значение минус 3*А, равное 111111110100010010, блок 18 генерирует значение минус 4*А равное 111111110000011000. Промежуточное значение коэффициента 0 не генерируется, а мультиплицируется из опорного 0 (вход 6).Based on the leading edge of the clock signal (hereinafter referred to as CK) in the intermediate value generator (block 1), the intermediate value generation blocks calculate intermediate 18-bit values from A. Thus, block 11 generates the value 4*A equal to 000000001111101000, block 12 generates the value 3*A equal to 000000001011101110, block 13 generates the value 2*A equal to 000000000111110100, block 14 generates the value A equal to 000000000011111010, block 15 generates the value minus A equal to 111111111100000110, block 16 generates the value minus 2*A equal to 111111111000001100, block 17 generates the value minus 3*A equal to 111111110100010010, block 18 generates the value minus 4*A equal to 111111110000011000. The intermediate value of the coefficient 0 is not generated, but is multiplied from the reference 0 (input 6).

Параллельно этому, мультиплексор генератора промежуточных значений (блок 19) производит коммутацию конвейер свертки промежуточных значений с блоками генерации в соответствии с В (вход 5). Для этого, В (вход 5) разбивается на 6 битовых групп со взаимным перекрытием на 1 бит, и поступают на управляющие входы мультиплексоров генератора промежуточных значений (блоки 191-196), причем, на управляющем входе мультиплексора (блок 191) битовая группа смещается влево на 1, а на управляющем входе мультиплексора (блок 196) расширяется знаковый бит, тем самым получая следующий набор квартетов входа: управляющий вход блока 191 = 0100, управляющий вход блока 192 = 1000, управляющий вход блока 193 = 0101, управляющий вход блока 194 = 1100, управляющий вход блока 195 = 0001, управляющий вход блока 196 = 0000. Каждому коэффициенту промежуточных значений соответствует один или более вариантов квартетов бинарных чисел (см. фиг.14). Так же, мультиплексоры генератора промежуточных значений (блоки 191-196) приводят промежуточные значения к 32-битному виду, за счет смещения влево значения на номер квартета умноженного на 3, и заполнением оставшихся старших битов посредством расширения знакового бита, или наоборот, отбрасыванием старшего бита промежуточного значения в случае 5 квартета. Таким образом, мультиплексор генератора промежуточных значений (блок 19) передает в конвейер свертки промежуточных значений (блок 3) следующий набор пар промежуточных значений в сумматоры первого слоя: сумматор блок 31 00000000000000000000000111110100 и 11111111111111111110000011000000, сумматор блок 32 00000000000000001011101110000000 и 11111111111111000001100000000000, сумматор блок 33 00000000000011111010000000000000 и 00000000000000000000000000000000.In parallel to this, the intermediate value generator multiplexer (block 19) switches the intermediate value convolution pipeline with the generation blocks in accordance with B (input 5). For this purpose, B (input 5) is divided into 6 bit groups with mutual overlap of 1 bit, and fed to the control inputs of the intermediate value generator multiplexers (blocks 191-196), wherein, at the control input of the multiplexer (block 191), the bit group is shifted to the left by 1, and at the control input of the multiplexer (block 196), the sign bit is expanded, thereby obtaining the following set of input quartets: control input of block 191 = 0100, control input of block 192 = 1000, control input of block 193 = 0101, control input of block 194 = 1100, control input of block 195 = 0001, control input of block 196 = 0000. Each coefficient of the intermediate values corresponds to one or more variants of quartets of binary numbers (see Fig. 14). Also, the intermediate value generator multiplexers (blocks 191-196) convert the intermediate values to 32-bit form by shifting the value to the left by the quartet number multiplied by 3, and filling the remaining high-order bits by extending the sign bit, or vice versa, by discarding the high-order bit of the intermediate value in the case of quartet 5. Thus, the intermediate value generator multiplexer (block 19) passes the following set of intermediate value pairs to the intermediate value convolution pipeline (block 3) into the adders of the first layer: adder block 31 0000000000000000000000111110100 and 11111111111111111110000011000000, adder block 32 000000000000000001011101110000000 and 111111111111111000001100000000000, adder block 33 00000000000001111101000000000000 and 000000000000000000000000000000000.

После, по заднему фронту синхросигнала CK первый слой сумматоров (блоки 31-33) в конвейере свертки промежуточных значений начинает попарно складывать значения, переданные из генератора промежуточных значений (блок 1). Таким образом, на выходе первого слоя формируется 3 промежуточных 32-битных значения, которые передаются в сумматоры второго слоя: сумматор блок 34 11111111111111111110001010110100 и 11111111111111001101001110000000, сумматор блок 35 00000000000011111010000000000000.Afterwards, at the falling edge of the CK clock signal, the first layer of adders (blocks 31-33) in the intermediate value convolution pipeline begins to add in pairs the values transferred from the intermediate value generator (block 1). Thus, at the output of the first layer, 3 intermediate 32-bit values are formed, which are transferred to the adders of the second layer: adder block 34 11111111111111111110001010110100 and 1111111111111111001101001110000000, adder block 35 0000000000001111101000000000000.

После, по следующему переднему фронту синхросигнала CK второй слой сумматоров (блоки 34-35) в конвейер свертки промежуточных значений начинает попарно складывать переданные из предыдущего слоя промежуточные значения. Так как исполняется MAC-операция, на вход сумматора блок 35 из мультиплексора выбора операции (блок 2) подается значение (вход 7), равное 00001010111100110000101011110011. Таким образом, на выходе первого слоя формируется 2 промежуточных 32-битных значения, которые подаются на сумматор блок 36: 11111111111111001011011000110100 и 00001011000000101010101011110011. Параллельно этому генератор промежуточных значений (блок 1) и мультиплексор выбора операции (блок 2) могут начать обработку следующего набора операндов.Afterwards, at the next leading edge of the CK clock signal, the second layer of adders (blocks 34-35) in the intermediate value convolution pipeline begins to add the intermediate values transmitted from the previous layer in pairs. Since the MAC operation is executed, the value (input 7) equal to 00001010111100110000101011110011 is fed from the operation selection multiplexer (block 2) to the input of the adder block 35. Thus, at the output of the first layer, 2 intermediate 32-bit values are formed, which are fed to the adder block 36: 11111111111111001011011000110100 and 00001011000000101010101011110011. In parallel to this, the intermediate value generator (block 1) and the operation selection multiplexer (block 2) can begin processing the next set of operands.

После, по заднему фронту синхросигнала CK последний слой сумматоров в конвейере свертки промежуточных значений (блок 3) заканчивает операцию умножения сложением последних промежуточных значений, формируя результат (выход 9), равный 00001010111111110110000100100111. Затем, до следующего положительного фронта CK будет удерживаться результат на выходе конвейера свертки промежуточных значений.Then, on the falling edge of the CK clock signal, the last layer of adders in the intermediate value convolution pipeline (block 3) completes the multiplication operation by adding the last intermediate values, forming a result (output 9) equal to 000010101111111110110000100100111. Then, until the next positive edge of CK, the result will be held at the output of the intermediate value convolution pipeline.

Использование заявляемого изобретения позволяет быстро проводить большое количество операций умножения или комбинированного умножения-сложения в конвейерном режиме работы, то есть каждый такт работы получать на вход новый набор значений операндов и выдавать на выход новый результат, получаемый на основе старого набора значений.The use of the claimed invention allows for the rapid execution of a large number of multiplication or combined multiplication-addition operations in a pipeline mode of operation, i.e., each cycle of operation, receiving a new set of operand values at the input and issuing a new result at the output, obtained on the basis of the old set of values.

Claims (5)

1. Конвейерный умножитель, содержащий генератор промежуточных значений, выполненный с возможностью приема первого и второго операндов, а также генерации промежуточных результатов умножения, выходы которого соединены со входами конвейера свертки промежуточных значений, вход которого связан с выходом мультиплексора выбора операции умножения или комбинированного умножения-сложения с третьим операндом, отличающийся тем, что конвейерный умножитель выполнен с возможностью обработки входных операндов разрядностью 16 бит, получения результата выполнения операции разрядностью 32 бита, работы каждого следующего блока по инверсному относительно предыдущего блока фронту синхросигнала; генератор промежуточных значений выполнен с возможностью реализации модифицированного алгоритма Бута Radix-8, а также ускоренной генерации промежуточных значений с неединичными коэффициентами за полтакта и параллельной генерации всех вариантов промежуточных значений; конвейер свёртки выполнен трёхслойным по типу «древо Уоллеса» с возможностью сложения шести промежуточных значений.1. A pipeline multiplier comprising an intermediate value generator configured to receive first and second operands and to generate intermediate multiplication results, the outputs of which are connected to the inputs of an intermediate value convolution pipeline, the input of which is connected to the output of a multiplexer for selecting a multiplication operation or a combined multiplication-addition with a third operand, wherein the pipeline multiplier is configured to process 16-bit input operands, to obtain a 32-bit operation result, to operate each subsequent block on an inverse clock edge relative to the previous block; the intermediate value generator is configured to implement a modified Radix-8 Booth algorithm and to accelerate the generation of intermediate values with non-unit coefficients in half a cycle and to generate all intermediate value variants in parallel; the convolution pipeline is a three-layer "Wallace tree" type pipeline with the capability of adding six intermediate values. 2. Конвейерный умножитель по п.1, отличающийся тем, блоки генератора промежуточных значений выполнены с возможностью генерации вариантов промежуточных значений из операнда-множимого.2. A pipeline multiplier according to claim 1, characterized in that the intermediate value generator blocks are designed with the ability to generate variants of intermediate values from the multiplicand operand. 3. Конвейерный умножитель по п.1, отличающийся тем, что мультиплексор генератора промежуточных значений состоит из шести параллельных мультиплексоров.3. A pipeline multiplier according to claim 1, characterized in that the intermediate value generator multiplexer consists of six parallel multiplexers. 4. Конвейерный умножитель по п.1, отличающийся тем, что конвейер свертки выполнен с возможностью проведения трёх этапов сложения, каждый из которых осуществляется отдельной группой сумматоров.4. A pipeline multiplier according to item 1, characterized in that the convolution pipeline is designed with the possibility of carrying out three stages of addition, each of which is carried out by a separate group of adders. 5. Конвейерный умножитель по п.1, отличающийся тем, мультиплексор выбора операции выполнен с возможностью записи на основе значения флага выбора операции значения 32-битного операнда в случае исполнения операции комбинированного умножения-сложения либо записи логического ноля в случае исполнения операции умножения в 32-битный регистр при параллельной генерации промежуточных значений и их загрузке в конвейер свертки промежуточных значений посредством коммутации через мультиплексор, передающий полученное значение в конвейер свертки промежуточных значений.5. A pipeline multiplier according to claim 1, characterized in that the operation selection multiplexer is configured to record, based on the value of the operation selection flag, the value of a 32-bit operand in the case of executing a combined multiplication-addition operation or to write a logical zero in the case of executing a multiplication operation into a 32-bit register during parallel generation of intermediate values and their loading into the intermediate value convolution pipeline by switching through the multiplexer, which transmits the obtained value into the intermediate value convolution pipeline.
RU2024104905A 2024-02-27 2024-02-27 Conveyor multiplier RU2827680C1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/RU2024/050330 WO2025183589A1 (en) 2024-02-27 2024-12-25 Pipelined multiplier

Publications (1)

Publication Number Publication Date
RU2827680C1 true RU2827680C1 (en) 2024-10-01

Family

ID=

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7730118B2 (en) * 2005-04-07 2010-06-01 Stmicroelectronics (Research & Development) Limited Multiply-accumulate unit and method of operation
RU2546072C1 (en) * 2013-09-24 2015-04-10 Общество с ограниченной ответственностью "ЛЭТИНТЕХ" Conveyor arithmetic multiplier
US10437558B2 (en) * 2016-09-23 2019-10-08 Stmicroelectronics S.R.L. Circuit for performing a multiply-and-accumulate operation
RU2797164C1 (en) * 2023-03-22 2023-05-31 федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" Pipeline module multiplier

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7730118B2 (en) * 2005-04-07 2010-06-01 Stmicroelectronics (Research & Development) Limited Multiply-accumulate unit and method of operation
RU2546072C1 (en) * 2013-09-24 2015-04-10 Общество с ограниченной ответственностью "ЛЭТИНТЕХ" Conveyor arithmetic multiplier
US10437558B2 (en) * 2016-09-23 2019-10-08 Stmicroelectronics S.R.L. Circuit for performing a multiply-and-accumulate operation
RU2797164C1 (en) * 2023-03-22 2023-05-31 федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" Pipeline module multiplier

Similar Documents

Publication Publication Date Title
Ma et al. Multiplier policies for digital signal processing
CN109144469B (en) Pipeline structure neural network matrix operation architecture and method
Olivieri Design of synchronous and asynchronous variable-latency pipelined multipliers
Srinivas et al. New realization of low area and high-performance Wallace tree multipliers using booth recoding unit
KR100236250B1 (en) High speed numerical processor
RU2827680C1 (en) Conveyor multiplier
Kaivani et al. High-frequency sequential decimal multipliers
WO2025183589A1 (en) Pipelined multiplier
Bhattacharya et al. Design and Analysis of a Hardware Accelerator with FPU-Based Runge-Kutta Solvers
Kumar et al. VLSI architecture of pipelined booth wallace MAC unit
Shafique et al. ON-CNN: Low Latency and High Throughput Online Arithmetic based Convolutional Neural Network Accelerator
Zhuo et al. High-performance and area-efficient reduction circuits on FPGAs
Spoorthi et al. A decimal multiplier with improved speed using semi-parallel iterative approach
Oudjida et al. A new high radix-2r (r≥ 8) multibit recoding algorithm for large operand size (N≥ 32) multipliers
Yeh et al. Efficient pipelined multi-operand adders with high throughput and low latency: designs and applications
Kannappan et al. A Survey on Multi-operand Adder
Wang et al. The Design of Multipliers Based on Radix-4 Booth Coding
TWI807927B (en) Vector processor with vector reduction method and element reduction method
Ramya et al. Implementation of High Speed FFT using Reversible Logic Gates for Wireless DSP Applications
JPWO2002029546A1 (en) Arithmetic unit and electronic circuit device using the same
RU2838847C1 (en) Conveyor multiplier by modules
JP2004318670A (en) Arithmetic unit and arithmetic unit
Shivaanivarsha et al. An Efficient Design and Implementation of High-Speed Booth Multiplier using Shift-Opt Algorithm
Olsen Introduction of the residue number arithmetic logic unit with brief computational complexity analysis
Shan et al. Design of Approximate Multi-Granularity Multiply-Accumulate Unit for Convolutional Neural Network
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载