# US 12,182,533 B2 · Data processing system configured for separated computations for positive and negative data

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,182,533 B2
- Document ID: US12182533B2
- Status: Granted
- Kind: B2
- Application number: 17/100,748
- Filed: 2020-11-20
- Published: 2021-05-20
- Granted: 2024-12-31
- Earliest claimed: 2019-11-20
- Assignees: Mentium Technologies Inc.
- Applicants: Mentium Technologies Inc.
- Inventors: Farnood Merrikh Bayat
- Web page: https://patentgrep.com/patent/US12182533B2

## CPC

- G06F 7/5443: {Sum of products (for applications thereof, see the relevant places, e.g. G06F17/10, H03H17/00)}
- G06F 1/3243: {Power saving in microcontroller unit}
- G06F 1/329: by task scheduling
- G06F 5/01: for shifting, e.g. justifying, scaling, normalising {(digital stores in which the information is moved stepwise, e.g. shift-registers G11C19/00; digital stores in which the information circulates G11C21/00)}
- G06F 7/4991: {Overflow or underflow}
- G06F 7/50: Adding; Subtracting (G06F7/483 - G06F7/491, G06F7/544 - G06F7/556 take precedence)
- G06F 7/523: Multiplying only
- G06F 7/74: Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders {(with shifting G06F5/01)}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06N 3/0464: Convolutional networks [CNN, ConvNet]
- G06N 3/08: Learning methods
- G06N 20/00: Machine learning
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS

## Abstract

A method includes obtaining input data and separating the input data into a first subset of input data and a second subset of input data, the first subset of input data including positive input data and the second subset of input data including negative input data. The method includes performing positive computations on the first subset of input data to determine one or more first results and performing negative computations on the second subset of input data to determine one or more second results. The method includes aggregating the one or more first results and the one or more second results to determine a solution based on the aggregating. The method includes executing an application using a machine learning model or a deep neural network based on the determined solution.

## Claims

### Claim 1

A method, comprising:
obtaining input data;
performing computations on the input data using a first arithmetic logic unit to determine one or more first results;
performing computations on the input data using a second arithmetic logic unit to determine one or more second results, wherein the first arithmetic logic unit and the second arithmetic logic unit operate in parallel;
separating the one or more firstresults and the one or more second results into a first subset of data and a second subset of data, the first subset of data including positive data and the second subset of data including negative data;
aggregating, using a positive adder, the first subset of data;
aggregating, using a negative adder, the second subset of data;
determining a solution based on the aggregating the first subset of data and the second subset of data; and
executing an application using a machine learning model or a deep neural network based on the solution.

### Claim 2 (depends on 1)

The method of claim 1, wherein the obtained input data includes at least one of 2′s complement, 1′s complement, or sign-magnitude data representations.

### Claim 3 (depends on 1)

The method of claim 1, wherein:
the input data comprise a plurality of input vectors;
the performing computations on the input data using the first arithmetic logic unit comprises multiplying two or more elements of the plurality of input vectors together using the first arithmetic logic unit to determine the one or more first results as a first plurality of element-wise products;
the performing computations on the input data using the second arithmetic logic unit comprises multiplying two or more elements of the plurality of input vectors together using the second arithmetic logic unit to determine the one or more second results as a second plurality of element-wise products;
the separating the one or more first results and the one or more second results into the first subset of data and the second subset comprises separating the first plurality of element-wise products and the second plurality of element-wise products into a first subset of element-wise products and a second subset of element-wise products, the first subset of element-wise products including positive element-wise products and the second subset of element-wise products including negative element-wise products;
the aggregating, using the positive adder, the first subset of data comprises summing, using the positive adder, each element-wise product of the first subset of element-wise products to calculate a first element-wise sum;
the aggregating, using the negative adder, the second subset of data comprises summing, using the negative adder each element-wise product of the second subset of element-wise products to calculate a second element-wise sum; and
the method further comprises subtracting the first element-wise sum and the second element-wise sum.

### Claim 4 (depends on 3)

The method of claim 3, wherein the obtaining the input data further comprises:
categorizing one or more bits of each of the input data as Least Significant Bits (LSB) or as Most Significant Bits (MSB); and
setting a portion of the input data categorized as the LSB to zero in performing the multiplying the two or more elements of the plurality of input vectors together using the first arithmetic logic unit to determine the one or more first results as the first plurality of element-wise products.

### Claim 5 (depends on 4)

The method of claim 4, wherein the summing, using the positive adder, each element-wise product of the first subset of element-wise products to calculate the first element-wise sum further comprises assigning a gain value to each element-wise product of the first subset, the gain value indicating a corresponding weight associated with each respective element-wise product of the first subset and being based on amplitude of the input data before and after setting the portion of the input data categorized as the LSB to zero.

### Claim 6 (depends on 3)

The method of claim 3, wherein each of the first plurality of element-wise products and the second plurality of element-wise products are calculated for each two bits of the plurality of input vectors without using a multiplication.

### Claim 7

A digital accelerator comprising:
a processor configured to obtain input data, the processor comprising:
a first arithmetic logic unit configured to perform computations on the input data to determine one or more first results;
a second arithmetic logic unit configured to perform computations on the input data to determine one or more second results, wherein the first arithmetic logic unit and the second arithmetic logic unit operate in parallel and are configured to separate the one or more first results and the one or more second results into a first subset of data and a second subset of data, the first subset of data including positive data and the second subset of data including negative data;
a positive adder configured to aggregate the first subset of data;
a negative adder configured to aggregate the second subset of data; and
a memory configured to store the first subset of data and the second subset of data; the processor configured to:
determine a solution based on aggregating the first subset of data and the second subset of data; and
execute an application using a machine learning model or a deep neural network based on the solution.

### Claim 8 (depends on 7)

The digital accelerator of claim 7 further comprising a data representation converter configured to convert one or more of the input data, the one or more first results, and the one or more second results into at least one of sign-magnitude format, 1's complement, or 2's complement.

### Claim 9 (depends on 7)

The digital accelerator of claim 7, wherein the first arithmetic logic unit and the second arithmetic logic unit further comprise dedicated hardware configured to accelerate execution of one or more dot product operations that include at least one of vector-by-matrix multiplication, matrix-by-matrix multiplication, or tensor-by-tensor multiplication.

### Claim 10 (depends on 9)

The digital accelerator of claim 9, wherein the dedicated hardware for accelerating execution of the dot product operations comprises the positive adder comprises a multi-input adder that includes a plurality of sub-adder circuits, the multi-input adder being configured to:
determine, by a first subset of sub-adder circuits of the plurality of sub-adder circuits, a plurality of sub-products in a first stage of the multi-input adder; and
aggregate, by a second subset of sub-adder circuits of the plurality of sub-adder circuits, each respective sub-product of the plurality of sub-products determined by the first subset of sub-adder circuits to determine a final product in a second stage of the multi-input adder.

### Claim 11 (depends on 10)

The digital accelerator of claim 10, wherein the multi-input adder includes an adder architecture including at least one of: a ripple carry adder, a carry skip adder, a carry increment adder, a carry look ahead adder, a carry save adder, a carry select adder, or a carry bypass adder.

### Claim 12 (depends on 10)

The digital accelerator of claim 10, wherein:
a first voltage bias is applied to the first subset of sub-adder circuits in the first stage;
a second voltage bias is applied to the second subset of sub-adder circuits in the second stage; and
the first voltage bias includes a lower voltage than the second voltage bias.

### Claim 13 (depends on 7)

The digital accelerator of claim 7, wherein:
the input data comprise a plurality of input vectors;
the first arithmetic logic unit is further configured to perform computations on the input data by multiplying two or more elements of the plurality of input vectors together to determine the one or more first results as a first plurality of element-wise products;
the second arithmetic logic unit is further configured to perform computations on the input data by multiplying two or more elements of the plurality of input vectors together to determine the one or more second results as a second plurality of element-wise products;
the first arithmetic logic unit and the second arithmetic logic unit are further configured to separate the one or more first results and the one or more second results into the first subset of data and the second subset by separating the first plurality of element-wise products and the second plurality of element-wise products into a first subset of element-wise products and a second subset of element-wise products, the first subset of element-wise products including positive element-wise products and the second subset of element-wise products including negative element-wise products;
the positive adder is configured to sum each element-wise product of the first subset of element-wise products to calculate a first element-wise sum;
the negative adder is configured to sum each element-wise product of the second subset of element-wise products to calculate a second element-wise sum; and
the processor comprises a subtractor configured to subtract the first element-wise sum and the second element-wise sum.

### Claim 14 (depends on 13)

The digital accelerator of claim 13, wherein the processor is further configured to:
categorize one or more bits of each of the input data as Least Significant Bits (LSB) or as Most Significant Bits (MSB); and
responsive to multiplying two or more elements of the plurality of input vectors together using at least one of the first arithmetic logic unit or the second arithmetic logic unit, set a portion of the bits of the input data categorized as the LSB to, wherein a number of the bits set to zero depends on a final precision of the computations, a total number of bits of the obtained input data, and a total number of input signals.

### Claim 15

One or more non-transitory computer-readable storage media configured to store instructions that, in response to being executed, cause a system to perform operations, the operations comprising:
obtaining input data;
performing computations on the input data using a first arithmetic logic unit to determine one or more first results;
performing computations on the input data using a second arithmetic logic unit to determine one or more second results, wherein the first arithmetic logic unit and the second arithmetic logic unit operate in parallel;
separatingthe one or more first results and the one or more second results into a first subset of data and a second subset of data, the first subset of data including positive data and the second subset of data including negative data;
aggregating, using a positive adder, the first subset of data;
aggregating, using a negative adder, the second subset of data;
determining a solution based on the aggregating the first subset of data and the second subset of data; and
executing an application using a machine learning model or a deep neural network based on the solution.

### Claim 16 (depends on 15)

The one or more non-transitory computer-readable storage media of claim 15, wherein:
the input data comprise a plurality of input vectors;
the performing computations on the input data using the first arithmetic logic unit comprises multiplying two or more elements of the plurality of input vectors together using the first arithmetic logic unit to determine the one or more first results as a first plurality of element-wise products;
the performing computations on the input data using the second arithmetic logic unit comprises multiplying two or more elements of the plurality of input vectors together using the second arithmetic logic unit to determine the one or more second results as a second plurality of element-wise products;
the separating the one or more first results and the one or more second results into the first subset of data and the second subset comprises separating the first plurality of element-wise products and the second plurality of element-wise products into a first subset of element-wise products and a second subset of element-wise products, the first subset of element-wise products including positive element-wise products and the second subset of element-wise products including negative element-wise products;
the aggregating, using the positive adder, the first subset of data of data comprises summing, using the positive adder, each element-wise product of the first subset of element-wise products to calculate a first element-wise sum;
the aggregating, using the negative adder, the second subset of data comprises summing, using the negative adder, each element-wise product of the second sub set of element-wiseproducts to calculate a second element-wise sum; and
the operations comprise subtracting the first element-wise sum and the second element-wise sum.

### Claim 17 (depends on 16)

The one or more non-transitory computer-readable storage media of claim 16, wherein obtaining the input data further comprises:
categorizing one or more bits of each of the input data as Least Significant Bits (LSB) or as Most Significant Bits (MSB); and
setting a portion of the input data categorized as the LSB to zero in performing the multiplying the two or more elements of the plurality of input vectors together using the first arithmetic logic unit to determine the one or more first results as the first plurality of element-wise products.

### Claim 18 (depends on 17)

The one or more non-transitory computer-readable storage media of claim 17, wherein the summing, using the positive adder, each element-wise product of the first subset of element-wise products to calculate the first element-wise sum further comprises assigning a gain value to each element-wise product of the first subset, the gain value indicating a corresponding weight associated with each respective element-wise product of the first subset and being based on amplitude of the input data before and after setting the portion of the input data categorized as the LSB to zero.
